Bingo, Computer Graphics & Game Developer

Transformation In Multiple Dimensions

本文运用上文中多维随机变量分布转换规律,来推导出PBRT中一系列重要结论


极坐标与笛卡尔坐标

已知p(x,y)=p(r,θ)Jt(r,θ)p(x, y)=\frac{p(r, \theta)}{\vert J_t(r, \theta) \vert},其中
T1(r,θ)=rcosθ=xT2(r,θ)=rsinθ=y
\begin{array}{l}
T_1(r,\theta)=rcos\theta=x \\
T_2(r,\theta)=rsin\theta=y
\end{array}

Jt(r,θ)=[cosθrsinθsinθrcosθ]=rJ_t(r, \theta)=\left[
\begin{matrix}
cos\theta & -rsin\theta \\
sin\theta & rcos\theta \\
\end{matrix}
\right] = r

则有p(r,θ)=rp(x,y)p(r, \theta) = rp(x, y)


球坐标与笛卡尔坐标

T1(r,θ,ϕ)=rsinθcosϕ=xT2(r,θ,ϕ)=rsinθsinϕ=yT3(r,θ,ϕ)=rcosθ=z
\begin{array}{l}
T_1(r,\theta, \phi)=rsin\theta cos\phi = x \\
T_2(r,\theta, \phi)=rsin\theta sin\phi = y \\
T_3(r,\theta, \phi)=rcos\theta = z
\end{array}

p(x,y,z)=p(r,θ,ϕ)Jt(r,θ,ϕ)p(x, y, z)=\frac{p(r, \theta, \phi)}{\vert J_t(r, \theta, \phi) \vert},其中

Jt(r,θ,ϕ)=[sinθcosϕrcosθcosϕrsinθsinϕsinθsinϕrcosθsinϕrsinθcosϕcosθrsinθ0]=r2sinθJ_t(r, \theta, \phi)=\left[
\begin{matrix}
sin\theta cos\phi & rcos\theta cos\phi & -rsin\theta sin\phi \\
sin\theta sin\phi & rcos\theta sin\phi & rsin\theta cos\phi \\
cos\theta & -rsin\theta & 0\\
\end{matrix}
\right] = r^2sin\theta

则有p(r,θ,ϕ)=r2sinθp(x,y,z)p(r, \theta, \phi) = r^2sin\theta p(x, y, z)


立体角与球坐标

立体角的定义为在单位圆上投影的面积,在球坐标中有dω=sinθdθdϕd\omega=sin\theta d\theta d\phi成立

因此基于物理Lambertion中的Ωf(ωi,ωo,p)cosθdω\int_{\Omega}{f(\omega_i, \omega_o, p)cos\theta d\omega}=1, 可得f(ωi,ωo,p)=102πdϕ0π2cosθsinθdθ=1πf(\omega_i, \omega_o, p) = \frac{1}{\int_{0}^{2\pi}d\phi \int_{0}^{\frac{\pi}{2}}{cos\theta sin\theta d\theta}} = \frac{1}{\pi}

若定义在某区域Ω\Omega上的概率为Pr{ωΩ}=Ωp(ω)dωPr\{ \omega \in \Omega \} = \int_{\Omega}{p(\omega)d\omega},也有Pr{(θ,ϕ)Ω}=Ωp(θ,ϕ)dθdϕPr\{ (\theta ,\phi) \in \Omega '\} = \int_{\Omega '}{p(\theta, \phi)d\theta d\phi}

因此
p(θ,ϕ)dθdϕ=p(ω)dωp(\theta, \phi)d\theta d\phi=p(\omega) d\omega
p(θ,ϕ)=sinθp(ω)p(\theta, \phi)=sin\theta p(\omega)


半球上立体角均匀采样

要对单位半球做关于立体角的均匀采样,则p(ω)=12πp(\omega)=\frac{1}{2\pi},根据上文中与球坐标关系,p(θ,ϕ)=sinθ2πp(\theta, \phi)=\frac{sin\theta}{2\pi}

则有两独立同均匀分布随机变量(ξ,ψ)[0,1](\xi,\psi)\in [0,1],要转换成满足半球上均匀分布的球坐标表示。

p(θ)=0π2p(θ,ϕ)dϕ=sinθ,p(ϕ)=02πp(θ,ϕ)dθ=12πp(\theta) = \int_{0}^{\frac{\pi}{2}}p(\theta, \phi)d\phi = sin\theta, \quad p(\phi) = \int_{0}^{2\pi}p(\theta, \phi)d\theta = \frac{1}{2\pi}

p(θϕ)=p(θ,ϕ)p(ϕ)=sinθ,p(ϕθ)=p(θ,ϕ)p(θ)=12πp(\theta \vert \phi) = \frac{p(\theta, \phi)}{p(\phi)}=sin\theta, \quad p(\phi \vert \theta) = \frac{p(\theta, \phi)}{p(\theta)}=\frac{1}{2\pi}

这里很明显可以看出来θ,ϕ\theta,\phi为两个独立随机变量

Pr{θθ}=0θp(θ)dθ=1cosθ,Pr{ϕϕ}=0ϕp(ϕ)dϕ=2πϕPr\{\theta' \leqslant \theta\} = \int_{0}^{\theta}p(\theta)d\theta=1-cos\theta , Pr\{\phi' \leqslant \phi\} = \int_{0}^{\phi}p(\phi)d\phi=2\pi \phi

应用反CDF变换法则,P1(θ)=1arccosθ,P1(ϕ)=2πϕP^{-1}(\theta)=1-arccos\theta, P^{-1}(\phi)=2\pi \phi,因此
θ=arccos(1ξ)=arccosξϕ=2πψ
\begin{array}{l}
\theta=arccos(1-\xi)=arccos\xi \\
\phi=2\pi \psi
\end{array}

由于球坐标不容易在计算机中表示,因此转换为笛卡尔表示

x=sinθcosϕ=1ξ2cos2πψy=sinθsinϕ=1ξ2sin2πψz=cosθ=ξ
\begin{array}{l}
x=sin\theta cos\phi=\sqrt{1-\xi^2}cos2\pi \psi \\
y = sin\theta sin\phi = \sqrt{1-\xi^2}sin2\pi \psi \\
z = cos\theta = \xi
\end{array}

同理可推证球上立体角均匀采样

x=2ξ(1ξ)cos2πψy=2ξ(1ξ)sin2πψz=12ξ
\begin{array}{l}
x=2\sqrt{\xi(1-\xi)}cos2\pi \psi \\
y = 2\sqrt{\xi(1-\xi)}sin2\pi \psi \\
z = 1-2\xi
\end{array}

下图为半球上均匀采样的结果与完整球上均匀采样的结果

hemisphere and sphere


单位圆上的均匀采样

要根据面积对单位圆上进行均匀采样,p(x,y)=1πp(x,y)=\frac{1}{\pi},则p(r,θ)=rp(x,y)p(r, \theta)=rp(x,y)

p(θ)=01rπdr=12π,p(rθ)=p(r,θ)p(θ)=2rp(\theta)=\int_{0}^{1}\frac{r}{\pi}dr=\frac{1}{2\pi}, \quad p(r\vert \theta)=\frac{p(r,\theta)}{p(\theta)}=2r

则他们对于的CDF为P(θ)=0θp(θ)dθ=θ2πP(\theta)=\int_{0}^{\theta}p(\theta)d\theta=\frac{\theta}{2\pi}P(rθ)=0rp(rθ)dr=r2P(r\vert \theta)=\int_{0}^{r}p(r\vert \theta)dr=r^2

求出其对应反函数P1(θ)=2πθP^{-1}(\theta)=2\pi\thetaP1(rθ)=rP^{-1}(r\vert \theta)=\sqrt{r}

若有两满足在[0,1][0, 1]上均匀分布的随机变量ξ,ψ\xi, \psiθ=2πξ,r=ψ\theta=2\pi \xi, r=\sqrt{\psi}

则转换回笛卡尔坐标结果为

x=ψcos2πξy=ψsin2πξ\begin{array}{l}
x = \sqrt{\psi}cos2\pi \xi\\
y = \sqrt{\psi}sin2\pi \xi
\end{array}

这里r,θr, \theta也是两个独立的随机变量

PBRT中论述的Concentric Disk Sampling可以参见前文Depth of Field中的实现与可视化


基于Cosine函数的半球采样

这里使用基本的转换思路,p(ω)cosθp(\omega)\propto cos\theta,因此p(ω)=cosθπp(\omega)=\frac{cos\theta}{\pi}

p(θ,ϕ)=sinθcosθπp(\theta, \phi)=\frac{sin\theta cos\theta}{\pi},则有

p(θ)=02πp(θ,ϕ)dϕ=2sinθcosθ,p(ϕθ)=p(θ,ϕ)p(θ)=12πp(\theta)=\int_{0}^{2\pi}p(\theta, \phi)d\phi=2sin\theta cos\theta, \quad p(\phi \vert \theta)=\frac{p(\theta, \phi)}{p(\theta)}=\frac{1}{2\pi}

可得CDF为

P(θ)=0θp(θ)dθ=1cos2θ2,P(ϕθ)=0ϕp(ϕθ)dϕ=ϕ2πP(\theta)=\int_{0}^{\theta}p(\theta)d\theta=\frac{1-cos2\theta}{2}, \quad P(\phi \vert \theta)=\int_{0}^{\phi}p(\phi \vert \theta)d\phi=\frac{\phi}{2\pi}

应用反CDF得P1(θ)=12arccos(12θ),P1(ϕθ)=2πϕP^{-1}(\theta)=\frac{1}{2}arccos(1-2\theta), P^{-1}(\phi \vert \theta)=2\pi \phi

θ=12arccos(12ξ)ϕ=2πψ
\begin{array}{l}
\theta = \frac{1}{2}arccos(1-2\xi)\\
\phi = 2\pi \psi
\end{array}

转换为笛卡尔下的表示为
x=sinθcosϕ=sin(12arccos(12ξ)))cos2πψy=sinθsinϕ=sin(12arccos(12ξ)))sin2πψz=cosθ=cos(12arccos(12ξ))\begin{array}{l}
x=sin\theta cos\phi = sin(\frac{1}{2}arccos(1-2\xi)))cos2\pi\psi \\
y=sin\theta sin\phi = sin(\frac{1}{2}arccos(1-2\xi)))sin2\pi\psi\
z=cos\theta = cos(\frac{1}{2}arccos(1-2\xi))
\end{array}

PBRT中给出了另一种计算办法,将均匀分布在圆盘上的点投影到半球上,其结果就满足Cosine-Weighted。

以下给出证明

假定在圆盘上的极坐标分布为p(r,ϕ)=rπp(r, \phi)=\frac{r}{\pi}(使用ϕ\phi方便后续将rr对应为θ\theta相关),p(r,ϕ)=p(θ,ϕ)Jt(r,θ)p(r, \phi)=\frac{p(\theta, \phi)}{\vert J_t(r, \theta)\vert}

r=sinθ=T1(r)ϕ=ϕ=T2(ϕ)
\begin{array}{l}
r=sin\theta = T_1(r) \\
\phi=\phi = T_2(\phi)
\end{array}

Jt(r,θ)=[cosθ001]=cosθJ_t(r, \theta)=\left[
\begin{matrix}
cos\theta & 0 \\
0 & 1 \\
\end{matrix}
\right] = cos\theta

即有p(θ,ϕ)=cosθp(r,ϕ)=rcosθπ=sinθcosθπp(\theta, \phi)=cos\theta p(r, \phi)=\frac{r cos\theta}{\pi} = \frac{sin\theta cos\theta}{\pi},和上述中得到的结果一样。

下图为两种方法产生的Cosine-Weighted对比

cartisan and projected


三角形均匀采样

PBRT中采用了等腰切两边为1的三角形特殊情况,不过以下计算办法可以变换回任何三角形

p(u,v)=2p(u,v)=2(面积倒数),则有

p(u)=01up(u,v)dv=22u,p(vu)=p(u,v)p(u)=11uP(u)=0up(u)du=2uu2,P(vu)=0vp(vu)dv=v1u
\begin{array}{l}
p(u)=\int_{0}^{1-u}p(u,v)dv=2-2u, \quad p(v\vert u)=\frac{p(u,v)}{p(u)}=\frac{1}{1-u} \\
P(u)=\int_{0}^{u}p(u)du=2u-u^2, \quad P(v\vert u)=\int_{0}^{v}p(v\vert u)dv=\frac{v}{1-u}
\end{array}

这里反变换CDF开根号时要注意到u,v[0,1]u,v\in [0,1]

因此有u=1ξ,v=ξψu=1-\sqrt{\xi},v=\sqrt{\xi}\psi

下图中即为三角形上的均匀采样

triangle sample


根据二维分段函数分布采样

这里分段函数的采样即为离散随机变量,若有横向纵向各nu,nvn_u,n_v个元素,函数上指定位置一点值为f(u,v)f(u,v),那么就有

If=vuf(u,v)dudv=1nunvi=0nu1j=0nv1f(ui,vj)p(u,v)=f(u,v)If
\begin{array}{c}
I_f=\int_v \int_u f(u,v)dudv=\frac{1}{n_un_v}\sum_{i=0}^{n_u-1}\sum_{j=0}^{n_v-1}f(u_i,v_j) \\
p(u,v)=\frac{f(u,v)}{I_f}
\end{array}

而边缘概率密度可直接得到
p(u)=vp(u,v)dv=1nuif(u,vi)If,p(vu)=p(u,v)p(u)=f(u,v)1nuif(u,vi)p(u)=\int_v p(u,v)dv=\frac{\frac{1}{n_u}\sum_i f(u, v_i)}{I_f} , \quad p(v\vert u)=\frac{p(u,v)}{p(u)}=\frac{f(u,v)}{\frac{1}{n_u}\sum_i f(u, v_i)}

之后利用CDF反变换,即PBRT中distribution1d的实现办法可完成对于p(u),p(vu)p(u),p(v\vert u)上的采样

此处效果可见前文中的二维分段函数采样的结果


圆锥均匀采样

类似于球上的均匀采样, 易证随机变量θ,ϕ\theta, \phi相互独立

已知p(ω)=12π(1cosθmax)p(\omega)=\frac{1}{2\pi(1-cos\theta_{max})},则p(θ,ϕ)=sinθ2π(1cosθmax)p(\theta, \phi)=\frac{sin\theta}{2\pi(1-cos\theta_{max})}

p(θ)=02πp(θ,ϕ)dϕ=sinθ1cosθmax,p(ϕ)=02πsinθ2π(1cosθmax)dθ=12πp(\theta)=\int_{0}^{2\pi}p(\theta, \phi)d\phi=\frac{sin\theta}{1-cos\theta_{max}}, \quad p(\phi)=\int_{0}^{2\pi}\frac{sin\theta}{2\pi(1-cos\theta_{max})}d\theta=\frac{1}{2\pi}

P(θ)=0θsinθ1cosθmaxdθ=1cosθ1cosθmax,P(ϕ)=0ϕ12πdϕ=ϕ2πP(\theta)=\int_{0}^{\theta}\frac{sin\theta}{1-cos\theta_{max}}d\theta=\frac{1-cos\theta}{1-cos\theta_{max}}, \quad P(\phi)=\int_{0}^{\phi}\frac{1}{2\pi}d\phi=\frac{\phi}{2\pi}

若有两随机变量xi,ψxi, \psi,运用反变换可有(此处省略了θ,ϕ\theta, \phi到笛卡尔的转换)

cosθ=1ξ+ξcosθmax,ϕ=2πψcos\theta=1-\xi +\xi cos\theta_{max}, \quad \phi=2\pi\psi

下图中即为圆锥上的均匀采样

cone sampling